package com.event.management.frontend.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 活动信息实体类
 */
@Data
@TableName("events")
public class Event {
    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 活动标题
     */
    private String title;

    /**
     * 活动封面图URL
     */
    private String cover;

    /**
     * 活动详情介绍
     */
    private String description;

    /**
     * 活动举办地点
     */
    private String location;

    /**
     * 活动开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;

    /**
     * 活动结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;

    /**
     * 活动状态
     * 只能是 draft, online, offline 这三个值之一
     */
    private String status;

    /**
     * 创建者用户ID
     */
    private Long creatorId;

    /**
     * 是否逻辑删除
     */
    @TableLogic
    private Boolean isDeleted;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updatedAt;
    
    /**
     * 活动分类
     */
    private String category;
    
    /**
     * 活动标签（逗号分隔）
     */
    private String tags;
    
    /**
     * 浏览量
     */
    private Integer viewCount;
    
    /**
     * 推荐排序权重
     */
    private Float recommendScore;
    
    /**
     * 活动状态枚举
     */
    public static final class EventStatus {
        public static final String DRAFT = "draft";
        public static final String ONLINE = "online";
        public static final String OFFLINE = "offline";
    }
} 